Verzendmethodes
Het afhandelen van verzending is een cruciaal onderdeel van elke e-commerce oplossing. In deze sectie wordt uitgelegd hoe je beschikbare verzendmethoden kunt ophalen, inclusief afhaalpunten, en hoe je een verzendmethode kunt selecteren met behulp van de Afosto Storefront JavaScript Client. Je leert hoe je deze acties kunt uitvoeren in een aangepast afrekenproces.
Beschikbare verzendmethoden ophalen
We kunnen de verzendmethoden ophalen met behulp van de winkelwagen. Dit zorgt ervoor dat we alleen methoden krijgen die van toepassing zijn op de huidige winkelwagen en de bijbehorende informatie. Op deze manier worden alleen de methoden geretourneerd die beschikbaar zijn voor het geselecteerde verzendland. Het berekent ook eventuele prijsregels voor de verzendmethoden en voegt verzendkosten toe of verwijdert deze.
Hier is een GraphQL query voorbeeld om beschikbare verzendmethoden op te halen, inclusief afhaalpunten op basis van een postcode en landcode. Zonder postcode en landcode zullen de afhaalpunten een foutmelding geven dat deze vereist zijn.
1import { gql } from '@afosto/storefront';
2
3const query = gql`
4 query getCart($id: String!, $country_code: String!, $postal_code: String!) {
5 cart(id: $id) {
6 options {
7 shipping {
8 methods {
9 id
10 name
11 description
12 instruction
13 carrier
14 is_pickup_point
15 pickup_points(
16 country_code: $country_code
17 postal_code: $postal_code
18 ) {
19 id
20 name
21 distance
22 address {
23 country_code
24 administrative_area
25 locality
26 postal_code
27 address_line_1
28 address_line_2
29 thoroughfare
30 premise_number
31 premise_number_suffix
32 }
33 }
34 pricing {
35 fixed
36 percentage
37 }
38 }
39 }
40 }
41 }
42 }
43`;
44
45const variables = {
46 id: 'my_cart_token',
47 countryCode: 'NL',
48 postalCode: '9723JA',
49};
50
51const response = await client.query(query, variables);
Een Verzendmethode Selecteren
Wanneer de klant een besluit heeft genomen, kunnen we de verzendmethode aan de winkelwagen toevoegen. Dit kan gedaan worden met het onderstaande voorbeeld.
1import { gql } from '@afosto/graphql-client';
2import CoreProjectionFields from '../CoreProjectionFieldsFragment';
3
4const AddShippingMethodToCart = gql`
5 mutation AddShippingMethodToCart($shipping_method_payload: AddShippingMethodToCartInput!) {
6 addShippingMethodToCart(input: $shipping_method_payload) {
7 cart {
8 ...CoreProjectionFields
9 id
10 delivery {
11 method {
12 id
13 name
14 }
15 }
16 }
17 }
18 }
19`;
20
21const variables = {
22 shipping_method_payload: {
23 cartId: 'my_cart_token',
24 methodId: 'selected_shipping_method_id',
25 },
26};
27
28const response = await client.query(AddShippingMethodToCart, variables);
Deze query bevat ook een fragment om informatie voor de projectie te verkrijgen. Het CoreProjectionFields fragment bevat alle informatie die je nodig hebt om een kostenoverzicht te tonen. Het overzicht houdt de klant op de hoogte van extra kosten die worden toegevoegd door hun keuzes. In de gehoste afrekenpagina nemen we dit fragment op bij elke stap om het overzicht up-to-date te houden.
Afhaalpunten
Sommige vervoerders bieden methoden die afhaalpunten zijn. Met deze methoden kan een klant een nabijgelegen afhaalpunt selecteren om hun bestelling naar toe te sturen. In het eerste voorbeeld halen we de afhaalpunten op voor alle methoden die deze hebben. Met deze gegevens kun je de opties aan de klant presenteren in je afrekenproces.
Afhaalpunten Zoeken op Postcode
Als je jouw klant de mogelijkheid wilt bieden om te zoeken naar afhaalpunten op basis van een postcode, kun je de volgende query gebruiken. Het toevoegen van een zoekveld in je afrekenproces dat deze query gebruikt, zal de klant helpen het beste afhaalpunt voor hen te selecteren.
1import { gql } from '@afosto/graphql-client';
2
3const getPickupPointsForCartQuery = gql`
4 query GetPickupPointsForCart($id: String!, $postal_code: String!, $country_code: String!) {
5 cart(id: $id) {
6 id
7 delivery {
8 method {
9 pickup_points(country_code: $country_code, postal_code: $postal_code) {
10 id
11 name
12 carrier
13 distance
14 address {
15 country_code
16 administrative_area
17 locality
18 postal_code
19 address_line_1
20 address_line_2
21 thoroughfare
22 premise_number
23 premise_number_suffix
24 }
25 }
26 }
27 }
28 }
29 }
30`;
31
32const variables = {
33 id: 'my_cart_token',
34 countryCode: 'NL',
35 postalCode: '9712HW', // Update this based on user input
36};
37
38const response = await client.query(getPickupPointsForCartQuery, variables);
Het afhaalpunt selecteren
Om het afhaalpunt voor een methode te selecteren, moeten we een aparte mutatie doen. Dit moet gebeuren nadat de verzendmethode is geselecteerd.
1import { gql } from '@afosto/graphql-client';
2import CoreProjectionFields from '../CoreProjectionFieldsFragment';
3
4const addPickupPointToCartMutation = gql`
5 ${CoreProjectionFields}
6 mutation AddPickUpPointToCart($pickup_point_payload: AddPickUpPointToCartInput!) {
7 addPickUpPointToCart(input: $pickup_point_payload) {
8 cart {
9 ...CoreProjectionFields
10 delivery {
11 method {
12 id
13 name
14 }
15 pickup_point {
16 id
17 name
18 }
19 }
20 }
21 }
22 }
23`;
24
25export default addPickupPointToCartMutation;
Door deze stappen te volgen, kun je verzendmethoden effectief beheren in je aangepaste afrekenproces met de Afosto Storefront JavaScript Client. De volgende stap is het selecteren van een betaalmethode.